<?php

namespace Messenger\Messages;

use Messenger\Groups;
use Messenger\Messages;
use Users\Profile;
use Messenger\BaseAction;

/**
 * Четыре кейса:
 * 
 * Если пользователь писал другому, то 
 * 		его сообщение может быть либо прочитано, либо нет
 * Если пользователь не писал другому, то :
 * 		если писал другой пользователь - сообщение о том, что надо бы ответить
 * 		если не писал (ни тот ни другой - выводим приглашение начать диалог)
 * 
 * Соответственно нужны признак того, что пользователь писал, 
 * что другой пользовтаель писал и что последнее соощение от меня было прочитано
 *
 */
class ReadStatusAction extends BaseAction {
	protected static $isPublic = true;
	
	/**
	 * Указываем необходимые неявные параметры
	 * @return multitype:string
	 */
	static function pullParams() {
		return ['identity'];
	}

	protected function run()
	{
		$targetProfileId = $this->request->targetProfileId;
		$targetProfile = Profile::find($targetProfileId);

		if (!$targetProfile) {
			$this->response->noRender(true);
			$this->response->content = '';
			return;
		}

		$myProfileId = $this->request->_identity;
		$group = Groups::newDialog($targetProfileId, $myProfileId);
		/** @var Messages $lastMessage */
		$lastMessage = Messages::getLastMessage((string)$group, $myProfileId);
		
		$this->response->userNickname = $targetProfile->nickname;
		$this->response->lastMessageIsRead = $lastMessage ? $lastMessage->isReaded() : false;
		$this->response->isMyMessageWrote = in_array(
			(string)$myProfileId, (array)$group->authorsOrderedPool);
		$this->response->isTargetMessageWrote = in_array(
			(string)$targetProfileId, (array)$group->authorsOrderedPool);
		
		
		$this->response->lastMessageTime = $group->lastMessageTime;
	
	}
}